package com.sans.structure;

import org.junit.Test;

import java.util.concurrent.ForkJoinPool;

/**
 * @author Sans
 */
public class LoopTest {
    @Test
    public void whileStructure() {
        int i = 1;
        while (i <= 10) {
            System.out.println(i);
            i++;
        }
    }

    @Test
    public void dowhileStructure() {
        int i = 100;
        do {
            System.out.println(i);
            i++;
        } while (i <= 10);
    }

    @Test
    public void forStructure() {
        for (int i = 1; i <= 10; i++) {
            System.out.println(i);
        }
    }

    @Test
    public void continueWord() {
        for (int i = 0; i < 10; i++) {
            if (i == 5) {
                continue;
            }
            System.out.println("循环到了" + i);
        }
    }

    @Test
    public void breakWord() {
        String result = "没有";
        for (int i = 100; i < 201; i++) {
            if (i % 27 == 0) {
                result = "有";
                System.out.println(i);
                break;
            }
        }
        System.out.println(result);
    }

    @Test
    public void Test1() {
        int x = 0;
        for (int i = 100; i < 200; i++) {
            if (i % 23 == 0) {
                x++;
                System.out.println(i);
            }
        }
        System.out.println("有" + x + "个数可以被23整除");
    }

    /**
     * 假设，芳芳答应老王攒够60万就嫁给他，老王去隔壁街小黑屋卖血一次可以赚1000元，求老王需要卖多少次血才能娶到芳芳。
     */
    @Test
    public void Test2() {
        int flag = 0, i = 0;
        while (i < 600000) {
            flag++;
            i += 1000;
        }
        System.out.println("需要献血" + flag + "次");
    }

    /**
     * 小兵今年13岁，大兵36岁，求多少年后大兵的年龄是小兵的2倍？
     */
    @Test
    public void Test3() {
        int age1 = 13, age2 = 36, year = 0;
        do {
            age1++;
            age2++;
            year++;
        } while (age1 * 2 != age2);
        System.out.println("小兵年龄:" + age1);
        System.out.println("大兵年龄:" + age2);
        System.out.println(year + "年后大兵的年龄是小兵的2倍");
    }

    /**
     * 本金1万元存入银行，年利率是千分之三，每过1年，将本金和利息相加作为新的本金，计算5年之后，获得的本金是多少？
     */
    @Test
    public void Test4() {
        double money = 10000;
        for (int year = 1; year <= 5; year++) {
            money = money * 1.003;
        }
        System.out.println("本金为" + money + "元");
    }

    /**
     * 求整数1-100的累加值，但要求第3，第6，第9...（3的倍数）个值，跳过不计算。
     */
    @Test
    public void Test5() {
        int sum = 0;
        for (int i = 1; i <= 100; i++) {
            if (i % 3 == 0) {
                continue;
            }
            sum += i;
        }
        System.out.println(sum);
    }

    /**
     * 利用for循环，输出1-100之间所有的偶数。
     */
    @Test
    public void Test6() {
        for (int i = 1; i <= 100; i++) {
            if (i % 2 == 0) {
                System.out.println(i);
            }
        }
    }

    /**
     * 利用for循环，求从0开始每次加5，加多少次之后可以达到135。
     */
    @Test
    public void Test7() {
        int flag = 0;
        for (int i = 0; i < 135; i += 5) {
            flag++;
        }
        System.out.println(flag);
    }

    /**
     * 你是一个土豪，你去参加非诚勿扰节目，现场一共有11位女嘉宾，从第一位女嘉宾开始循环出场，直到你喜欢的四号女嘉宾出场的时候，输出"I love you！"。
     */
    @Test
    public void Test8() {
        for (int i = 1; i <= 11; i++) {
            if (i == 4) {
                System.out.println("I love you！");
                break;
            }
        }
    }

    @Test
    public void Test9() {
        for (int i = 1; i < 10; i++) {
            for (int j = 1; j <= i; j++) {
                System.out.printf("%dx%d=%d\t", j, i, j * i);
            }
            System.out.println();
        }
    }
}


